<template>
  <div class="item" style="width: 100%">
    <div class="name">{{ item.name }}</div>
    <div class="manager">{{ item.manager }}</div>
    <el-dropdown class="dropdown" @command="commandEvent">
      <span>
        <span>操作</span>
        <i v-xxx class="el-icon-arrow-down el-icon--down" />
      </span>
      <template #dropdown>
        <el-dropdown-menu>
          <el-dropdown-item command="add">添加子部门</el-dropdown-item>
          <el-dropdown-item v-if="!item.top" command="look">
            查看部门
          </el-dropdown-item>
          <el-dropdown-item v-if="!item.top" command="del">
            删除部门
          </el-dropdown-item>
        </el-dropdown-menu>
      </template>
    </el-dropdown>
  </div>
</template>

<script>
import { companyDepartmentDelete } from '@/api/departments.js'
export default {
  name: 'TreeItem',
  // 创建 TreeItem.vue 同时接收对象传参

  /*
父子传值
    父传子
       传   子组件标签   属性名=值
       收   props:{
           属性名:{
               type:类型，多个类型  [Object,Array,String],
               default:基本数据类型，直接写
                       复杂数据类型：()=>{return 复杂数据类型}
               required:true, // 必填
               validator:(value)=>{
                   return boolean值
                      true:验证通过
                      false:验证失败
               }
           }
           单向数据流：栈不可修改，堆随便改
                   基本数据类型不可修改，复杂 数据类型，只要不修改它的引用地址（栈），它的值随便修改

       }
    子传父（子触发父方法）
       绑定：  子组件标签  @子组件方法名="父组件方法"
       触发：
         子组件内触发：this.$emit('子组件方法名',参数值)

  兄弟组件传值
     1：Vue.prototype.$bus=new Vue()
     2: 监听  this.$bus.$on('方法名',(参数值)=>{...})
     3：触发   this.$bus.$emit('方法名',实参值)
     4：销毁  this.$bus.$off('方法名')
     特点：bus的监听会累加，bus的监听不使用时要销毁，beforeDestroy销毁处理

v-model
   子组件标签   :value="父组件属性"  @input="父组件属性=$event"
   子组件标签  v-model="父组件属性"
   子组件内：
      props:['value']
      model:{
          prop:'value',
          event:'input'
      }
      触发：this.$emit('input',实参值)

.sync修饰符
   子组件标签  :属性名="父组件属性"   @update:属性名="父组件属性=$event"
   子组件标签  :属性名.sync="父组件属性"
   子组件内
     props:['属性名']
     触发：this.$emit('@update:属性名',实参值)
*/
  props: {
    item: {
      type: Object,
      default: () => ({})
    }
  },
  data() {
    return {}
  },
  methods: {
    commandEvent(command) {
      switch (command) {
        // this.$bus.$emit('showDialog', true, this.item,'add/edit') 传入的字段表示当前状态
        case 'add':
          this.$bus.$emit('showDialog', true, this.item, 'add') // 将当前点击项数据(this.item)传递给弹框组件
          console.log('添加')
          break
        case 'look':
          this.$bus.$emit('showDialog', true, this.item, 'edit')
          console.log('查看')
          break
        case 'del':
          this.$confirm(`你确定删除部门：[${this.item.name}]吗？`, '提示')
            .then(async() => {
              await companyDepartmentDelete(this.item.id)
              this.$message.success('删除成功')
              this.$emit('getData')
            })
            .catch(() => {})
          console.log('删除')
          break
      }
    }
  }
}
</script>

<style lang="scss" scoped>
.item {
  display: flex;
  align-items: center;
  .name {
    flex: 1;
  }
  .manager {
    width: 120px;
    margin-right: 20px;
    text-align: right;
  }
}
</style>
